package cn.song.service;

import cn.song.entity.excel.ExcelDataModel;
import cn.song.model.DownloadDto;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * Excel服务接口
 * 统一Excel操作的标准接口
 *
 * @author SongRenShuo
 * @date 2025/01/06
 */
public interface ExcelService {

    /**
     * 上传Excel文件并解析
     *
     * @param file Excel文件
     * @return 解析结果
     * @throws IOException IO异常
     */
    List<ExcelDataModel> uploadExcel(MultipartFile file) throws IOException;

    /**
     * 下载Excel文件
     *
     * @param dataList 数据列表
     * @param response HTTP响应
     * @param fileName 文件名
     * @throws IOException IO异常
     */
    void downloadExcel(List<ExcelDataModel> dataList, HttpServletResponse response, String fileName) throws IOException;

    /**
     * 下载Excel模板
     *
     * @param response HTTP响应
     * @param fileName 文件名
     * @throws IOException IO异常
     */
    void downloadTemplate(HttpServletResponse response, String fileName) throws IOException;

    /**
     * 异步处理Excel文件
     *
     * @param file Excel文件
     * @param downloadDto 下载任务信息
     * @return 任务ID
     */
    String processExcelAsync(MultipartFile file, DownloadDto downloadDto);

    /**
     * 获取服务类型
     *
     * @return 服务类型
     */
    String getServiceType();
} 